package com.nbgroup.pojo.vo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;
import java.util.List;

@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "menu")
public class MenuVo {
    // 创建人，可为空
    private String createBy;

    // 创建时间，不能为空
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    // 更新人，可为空
    private String updateBy;

    // 更新时间，可为空
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;

    // 菜单ID，必须大于0
    @TableId(type = IdType.AUTO)
    private Integer menuId;

    // 菜单名称，长度限制在1到50之间

    private String menuName;

    // 父菜单名称，可为空
    private String parentName;

    // 父菜单ID，必须大于等于0

    private Integer parentId;

    // 排序序号，必须大于等于0

    private Integer orderNum;

    // 菜单路径，长度限制在1到200之间

    private String path;

    // 组件，可为空
    private String component;

    // 是否为框架页面，0或1

    private Integer isFrame;

    // 是否缓存，0或1

    private Integer isCache;

    // 菜单类型，可为空但有业务规定的取值范围时可进一步添加约束
    private String menuType;

    // 是否可见，0或1

    private Integer visible;

    // 状态，0或1

    private Integer status;

    // 权限标识，可为空
    private String perms;

    // 菜单图标，可为空
    private String icon;

    // 子菜单列表，可为空
    private List children;
}
